package edu.isquen.core.base.service;

import java.io.Serializable;
import java.util.Collection;

import edu.isquen.core.base.dao.DataPackage;
import edu.isquen.core.base.model.ValueObject;

/****************************************************
* 文件名：BaseService.java
* 文件描述：基类业务接口
* 创建人： isquen, 2011 年6 月10 日
* 版本号：1.0
* 修改记录：
****************************************************/
public interface BaseService extends Serializable{
	
	/**********************************************
	* 函数名：doCreate
	* 参数：ValueObject
	* 功能描述:创建记录
	* 返回值：void
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract void doCreate(ValueObject vo) throws Exception;
	
	/**********************************************
	* 函数名：doCreate
	* 参数：ValueObject[]
	* 功能描述:批量创建记录
	* 返回值：void
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract void doCreate(ValueObject[] vos) throws Exception;
	
	/**********************************************
	* 函数名：doCreate
	* 参数：Collection
	* 功能描述:批量创建记录
	* 返回值：void
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract void doCreate(Collection<ValueObject> cols) throws Exception;
	
	/**********************************************
	* 函数名：doRemove
	* 参数：String key
	* 功能描述:按主键移除记录
	* 返回值：void
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract void doRemove(String key) throws Exception;
	
	/**********************************************
	* 函数名：doRemove
	* 参数：String[]
	* 功能描述:按主键批量移除记录
	* 返回值：void
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract void doRemove(String[] keys) throws Exception;
	
	/**********************************************
	* 函数名：doRemove
	* 参数：ValueObject
	* 功能描述:移除记录
	* 返回值：void
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract void doRemove(ValueObject vo) throws Exception;
	
	/**********************************************
	* 函数名：doUpdate
	* 参数：ValueObject
	* 功能描述:更新记录
	* 返回值：void
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract void doUpdate(ValueObject vo) throws Exception;
	
	/**********************************************
	* 函数名：doUpdate
	* 参数：ValueObject数组
	* 功能描述:批量更新记录
	* 返回值：void
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract void doUpdate(ValueObject[] vos) throws Exception;
	
	/**********************************************
	* 函数名：doUpdate
	* 参数：Collection
	* 功能描述:批量更新记录
	* 返回值：void
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract void doUpdate(Collection<ValueObject> cols) throws Exception;
	
	/**********************************************
	* 函数名：doView
	* 参数：字符串key
	* 功能描述:根据主键查找
	* 返回值：ValueObject
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract ValueObject doView(String key) throws Exception;
	
	/**********************************************
	* 函数名：doViewByName
	* 参数：字符串name
	* 功能描述:按名称查找
	* 返回值：void
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract DataPackage<ValueObject> doViewByName(String name) throws Exception;
	
	/**********************************************
	* 函数名：doQuery
	* 参数：
	* 功能描述:查找所有记录
	* 返回值：数据包DataPackage
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract DataPackage<ValueObject> doQuery() throws Exception;
	
	/**********************************************
	* 函数名：doGetTotalLines
	* 参数：字符串String
	* 功能描述:获取记录总数
	* 返回值：整型（int）
	* 抛出异常：Exception
	* 作者：isquen 2011/6/10
	**********************************************/
	public abstract int doGetTotalLines(String sql) throws Exception;
}
